package hu.diploma.web.server.util;

import hu.diploma.common.enums.DataType;
import hu.diploma.common.vos.GroupVo;
import hu.diploma.common.vos.PersonVo;
import hu.diploma.common.vos.PersonalDataVo;
import hu.diploma.common.vos.StructuredNameVo;
import hu.diploma.web.shared.ComboBoxItem;
import hu.diploma.web.shared.webvos.GroupWebVo;
import hu.diploma.web.shared.webvos.ContactWebVo;
import hu.diploma.web.shared.webvos.PersonalDataWebvo;
import hu.diploma.web.shared.webvos.StructuredNameWebVo;

import java.util.ArrayList;
import java.util.List;

public class TransformUtil {

	public static GroupWebVo groupVoToGroupWebVo(GroupVo groupVo) {
		return null;

	}

	public static List<GroupWebVo> groupVoToGroupWebVo(List<GroupVo> groupVos) {

		for (GroupVo groupVo : groupVos) {
			GroupWebVo groupWebVo = new GroupWebVo();
			groupWebVo.setId(groupVo.getId());
			groupWebVo.setName(groupVo.getName());
			List<ContactWebVo> list = new ArrayList<ContactWebVo>();
			for (PersonVo personVo : groupVo.getPeople()) {

				StructuredNameVo structuredName = personVo.getStructuredName();
				ContactWebVo personWebVo = new ContactWebVo();
				personWebVo.setId(personVo.getId());
				StructuredNameWebVo nameWebVo = new StructuredNameWebVo();
				nameWebVo.setId(structuredName.getId());
				nameWebVo.setDisplayName(structuredName.getDisplayName());
				nameWebVo.setFamilName(structuredName.getFamilName());
				nameWebVo.setGivenName(structuredName.getGivenName());
				nameWebVo.setMiddleName(structuredName.getMiddleName());
				nameWebVo.setPreixName(structuredName.getPreixName());
				personWebVo.setDisplayName(nameWebVo.getDisplayName());

				personWebVo.setNameWebVo(nameWebVo);
				if (personVo.getPersonalDatas() != null) {
					List<PersonalDataWebvo> personalDatas = new ArrayList<PersonalDataWebvo>();
					for (PersonalDataVo dataVo : personVo.getPersonalDatas()) {

						PersonalDataWebvo dataWebvo = new PersonalDataWebvo();
						dataWebvo.setId(dataVo.getId());
						dataWebvo.setSubType(new ComboBoxItem(dataVo.getSubtype().toString(), ""));
						dataWebvo.setSubTypeText(dataVo.getSubtype().toString());
						dataWebvo.setValue(dataVo.getValue());
						dataWebvo.setType(dataVo.getType().toString());
						personalDatas.add(dataWebvo);

						if (dataVo.getType().equals(DataType.EMAIL)) {
							personWebVo.setEmail(dataVo.getValue());
						}

						if (dataVo.getType().equals(DataType.PHONE)) {
							personWebVo.setPhone(dataVo.getValue());
						}
					}
					personWebVo.setPersonalDatas(personalDatas);
				}

				list.add(personWebVo);

			}
			groupWebVo.setPersonWebVos(list);
			List<GroupWebVo> groupWebVos = null;
			groupWebVos.add(groupWebVo);
		}

		return null;
	}
}